//----------------------------------------------------------
    // 简化用户操作
//----------------------------------------------------------

#ifndef __YMBXLOG__
#define __YMBXLOG__

#include "logger.hpp"

// 提供用户更方便使用的接口
namespace ymbxlog
{
    //获取日志器接口
    Logger::ptr GetLogger(const std::string& name);
    Logger::ptr GetRootLogger();

    //便捷创建日志器接口
    //创建同步局部日志器
    Logger::ptr CreatSyncLocalLogger(const std::string& name,LogLevel::Level lev);
    //创建同步全局日志器
    Logger::ptr CreatSyncGlobalLogger(const std::string& name,LogLevel::Level lev);
    //创建异步线程安全全局日志器
    Logger::ptr CreatAsyncLocalLogger(const std::string& name,LogLevel::Level lev);
    //创建异步线程安全局部日志器
    Logger::ptr CreatAsyncGLobalLogger(const std::string& name,LogLevel::Level lev);


#define debug(fmt, ...) Debug(__LINE__, __FILE__, __FUNCTION__,fmt, ##__VA_ARGS__)
#define info(fmt, ...) Info(__LINE__, __FILE__, __FUNCTION__,fmt, ##__VA_ARGS__)
#define warn(fmt, ...) Warn(__LINE__, __FILE__, __FUNCTION__,fmt, ##__VA_ARGS__)
#define error(fmt, ...) Error(__LINE__, __FILE__, __FUNCTION__,fmt, ##__VA_ARGS__)
#define fatal(fmt, ...) Fatal(__LINE__, __FILE__, __FUNCTION__,fmt, ##__VA_ARGS__)

//指定name日志器进行日志打印
#define LOG_DEBUG(name,fmt,...) ymbxlog::GetLogger(name)->debug(fmt,##__VA_ARGS__)
#define LOG_INFO(name,fmt,...) ymbxlog::GetLogger(name)->info(fmt,##__VA_ARGS__)
#define LOG_WARN(name,fmt,...) ymbxlog::GetLogger(name)->warn(fmt,##__VA_ARGS__)
#define LOG_ERROR(name,fmt, ...) ymbxlog::GetLogger(name)->error(fmt, ##__VA_ARGS__)
#define LOG_FATAL(name,fmt, ...) ymbxlog::GetLogger(name)->fatal(fmt, ##__VA_ARGS__)

//指定默认root日志器进行日志打印
#define rdebug(fmt,...) ymbxlog::GetRootLogger()->debug(fmt,##__VA_ARGS__)
#define rinfo(fmt,...) ymbxlog::GetRootLogger()->info(fmt,##__VA_ARGS__)
#define rwarn(fmt,...) ymbxlog::GetRootLogger()->warn(fmt,##__VA_ARGS__)
#define rerror(fmt, ...) ymbxlog::GetRootLogger()->error(fmt, ##__VA_ARGS__)
#define rfatal(fmt, ...) ymbxlog::GetRootLogger()->fatal(fmt, ##__VA_ARGS__)
}

#endif